<!--
Document / Documento: SeccionesTable.class

Created on / Creado : 23/05/2012, 10:39:10 AM

Author / Desarrolladores:
1. Raúl Lobo 04267711578 andrescerrada@gmail.com
2. José Ruiz 04265752819 jruiz@cenditel.gob.ve joseph2283@gmail.com
3. Jesús Becerra 04263779960 jbecerra@cenditel.gob.ve jesusignaciob@gmail.com
4. Rodolfo Sumoza 04166342086 rsumoza@cenditel.gob.ve rsumoza@gmail.com

Description / Comentarios:
Este archivo genera las siguientes funciones:
1- Obtiene Secciones.
2- Obtiene y ordena secciones por nombre.
3- Obtiene Secciones Por Ente.
4- Obtiene Secciones Por Facilitador.
5- Obtiene Secciones Por nombre, ente, area, estado, municipio, parroquia.
-->
<?php

/**
 * SeccionesTable
 * 
 * This class has been auto-generated by the Doctrine ORM Framework
 */
class SeccionesTable extends Doctrine_Table
{
    /**
     * Returns an instance of this class.
     *
     * @return object SeccionesTable
     */
//Función que Obtiene Secciones.
    public static function getInstance()
    {
        return Doctrine_Core::getTable('Secciones');
    }
//Función que Obtiene y ordena secciones por nombre.
    public function getSecciones() {
      $query = $this->getInstance()->createQuery()
                    ->orderBy('nombre_seccion');
      return $query->execute();
    }
//Función que obtiene Secciones Por Ente
    public function getSeccionesForEnte($ente) {
      $query = $this->getInstance()->createQuery()
                    ->where('id_ente = ?', $ente)
                    ->orderBy('nombre_seccion');
      return $query->execute();
    }
//Función que obtiene Secciones Por Facilitador
    public function getSeccionesForFacilitador($id_facilitador){
      $query = Doctrine_Query::create()
              ->select('s.id as id, s.nombre_seccion as nombre')
              ->from("secciones as s, areasFormacionFacilitador as aff,
                      disponibilidadTrasladoEstado as dte, areasFormacion as af,
                      ente as en")
              ->where('s.id_area_formacion = aff.id_area_formacion')
              ->andWhere('aff.id_area_formacion = af.id')
              ->andWhere('s.id_area_formacion = af.id')              
              ->andWhere('s.id_ente = en.id')
              ->andWhere('en.id_estado = dte.id_estado')
              ->andWhere('(en.id_municipio = dte.id_municipio or dte.id_municipio IS NULL)')
              ->andWhere("(aff.id_identificacion = '$id_facilitador')")
              ->andWhere("(s.id_identificacion is NULL or s.id_identificacion != '$id_facilitador')")
              ->orderBy('s.nombre_seccion asc');
      return $query->execute();
    }

//Función que obtiene Secciones Por nombre, ente, area, estado, municipio, parroquia
    public static function obtenerSecciones($nombre, $ente, $area, $estado, $municipio, $parroquia)
    {
	    //$w = "sec.id_identificacion is NULL";
        $w = "1=1";

        if (strlen($nombre) > 0)
        {
          $nombre = strtolower($nombre);
          $w = $w. " and lower(sec.nombre_seccion) like '%$nombre%'";
        }

	    if (strlen($area) > 0)
          $w = $w. " and sec.id_area_formacion = $area";

	    if (strlen($ente) > 0)
      {
          $w = $w. " and sec.id_ente = $ente";

	        $q = Doctrine_Core::getTable('Secciones')->createQuery("SELECT sec FROM Secciones sec")->where($w)
      ->orderBy('nombre_seccion asc');
      }
	    else
	    {
	      if (strlen($estado) > 0)
	        $w = $w. " and en.id_estado = $estado";
            
	      if (strlen($municipio) > 0)
	        $w = $w. " and en.id_municipio = $municipio";

	      if (strlen($parroquia) > 0)
	        $w = $w. " and en.id_parroquia = $parroquia";

	      $q = Doctrine_Core::getTable('Secciones')->createQuery("SELECT sec FROM Secciones sec JOIN sec.Ente en")->where($w)
        ->orderBy('nombre_seccion asc');
	    }
        
      return $q->execute();
   }

}
